package com.hdl.entity;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 *  购物车实体类(不用对应实体表)
 * @author Administrator
 *
 */
public class MallCart {
	
	/**
	 * hdlUserId 用户主键
	 */
	private String hdlUserId;
	
	/**
	 * mallCartTime 购物车创建时间
	 */
	private String mallCartTime;
	
	/**
	 * productMap 商品集合    键:商品id   值：购物项
	 */
	private Map<String,CartItem> productMap = new HashMap<String,CartItem>();
	
	/**
	 * mallCartTotal 购物车总计价格
	 */
	private Integer mallCartTotal = 0;
	
	/**
	 * list 购物项集合
	 */
	private List<CartItem> list = new ArrayList<CartItem>();
	
	
	/**
	 * Collection<CartItem> 返回所有的购物项
	 * @return
	 */
	public Collection<CartItem> getCartItem(){
		return productMap.values();
	}
	
	/**
	 * 清空购物车
	 */
	public void cleanCart() {
		productMap.clear();
		list.removeAll(list);
	}
	
	/**
	 * 删除单个商品
	 * @param productId
	 */
	public void removeOne(String productId) {
		productMap.remove(productId);
		Iterator<CartItem> iterator = list.iterator();
        while(iterator.hasNext()){
            CartItem item = iterator.next();
            if(item.getProduct().getMallProductId().equals(productId))
            	iterator.remove();
        }
	}
	
	/**
	 * 删除选中购物项
	 * @param uid 需要删除的商品id
	 */
	public void removeSelect(String[] uid) {
		for (String id : uid) {
			if(productMap.containsKey(id)) {
				this.removeOne(id);
			}
		}
	}
	
	/**
	 * 添加商品进购物车
	 * @param itemId 购物项商品id  用商品名称
	 * @param item 购物项对象
	 */
	public void addProduct(String itemId,CartItem item) {
		if(productMap.containsKey(itemId)) {//如果同样的商品被添加了，只修改商品的数量
			CartItem cartItem = productMap.get(itemId);
			cartItem.setNum(cartItem.getNum()+item.getNum());
			productMap.put(itemId, cartItem);//重新放进Map
			return;
		}
		list.add(item);
		productMap.put(itemId, item);
	}
	
	/**
	 * getListSize 获取购物车中购物项的数量
	 * @return
	 */
	public int getListSize() {
		return list.size();
	}

	public String getHdlUserId() {
		return hdlUserId;
	}

	public void setHdlUserId(String hdlUserId) {
		this.hdlUserId = hdlUserId;
	}

	public String getMallCartTime() {
		return mallCartTime;
	}

	public void setMallCartTime(String mallCartTime) {
		this.mallCartTime = mallCartTime;
	}

	public Map<String,CartItem> getProductMap() {
		return productMap;
	}
	
	public Integer getMallCartTotal() {
		return mallCartTotal;
	}
	
	public List<CartItem> getList(){
		return list;
	}

	public void setMallCartTotal(Integer mallCartTotal) {
		this.mallCartTotal = mallCartTotal;
	}

	@Override
	public String toString() {
		return "MallCart [ hdlUserId=" + hdlUserId + ", mallCartTime=" + mallCartTime
				+ ", productMap=" + productMap + ", mallCartTotal=" + mallCartTotal + "]";
	}
	
	
	
}
